Skip to content

Test: cluster-free E2E workflow from fork#83

Open
kadel wants to merge 10 commits into
mainfrom
test-cluster-free-e2e
Open

Test: cluster-free E2E workflow from fork#83
kadel wants to merge 10 commits into
mainfrom
test-cluster-free-e2e

Conversation

@kadel

@kadel kadel commented Jul 1, 2026

Copy link
Copy Markdown
Owner

Testing if e2e-cluster-free.yaml runs without repo-specific secrets or environment variables.

Validates that the workflow from redhat-developer#5005 is fully self-contained.

Made with Cursor

gustavolira and others added 10 commits June 23, 2026 15:43
Run real Playwright E2E against RHDH without an OpenShift/Kubernetes cluster
or container images — Playwright boots the backend and a frontend dev server
in-process and drives the browser against them.

- Legacy harness (Tier B, recommended): targets packages/app with dynamic
  plugins loaded via Scalprum, so the EXISTING specs run unmodified. Verified
  the production RHDH home page (Quick Access from the dynamic home-page
  plugin) renders off-cluster and the guest-signin home-page test passes.
- app-next harness: targets the new frontend system; covers core/statically
  registered plugin UIs (dynamic frontend loading is blocked upstream — see doc).
- Shared guest-auth + in-memory-SQLite overlay (app-config.local-e2e.yaml);
  webServer invokes backstage-cli/janus-cli from the repo-root .bin.
- yarn scripts: e2e:legacy-local, e2e:app-next-local.

Part of RHIDP-13501 (E2E Test Optimization), Layer 4a spike RHIDP-15075.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Scope legacy testMatch to the spec verified to pass off-cluster
  (learning-path-page); document the others as pending the global-header
  mount fix / per-spec config so the default run is green.
- Guard PATH interpolation against an undefined process.env.PATH via a
  shared pathWithRepoBin constant in both configs.
- Default CATALOG_INDEX_IMAGE to quay.io/rhdh/plugin-catalog-index:latest
  for main (release branches use the matching :1.y tag).
- Note that the guest-auth overlay is test-only and must never reach a
  production config; drop a duplicated comment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The chosen direction is the legacy cluster-free harness (packages/app), which
runs the existing specs unmodified. The app-next harness can't load dynamic
plugins yet (blocked upstream), so it's removed from this PR and tracked as a
follow-up; a short note in the doc records why legacy is the target.

- Remove playwright.app-next-local.config.ts and its guest-identity.spec.ts.
- Remove the e2e:app-next-local script.
- Make the overlay and docs legacy-only (keep a "why not app-next yet" note).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Scope the default run to the one verified-green test (guest-signin
  home-page) via testMatch + grep, instead of an unvalidated spec whose
  sidebar navigation may not match the harness config.
- Add a globalSetup that fails fast with the populate command when
  dynamic-plugins-root is empty (clear error instead of a locator timeout).
- Build the shared --config args via array join; document workers=1 and that
  the backend command mirrors packages/backend's start script.
- Doc: describe the grep-scoped default run and the fail-fast guard.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…h 80)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add .github/workflows/e2e-cluster-free.yaml: a no-cluster job that installs
deps + skopeo, populates dynamic-plugins-root from the public catalog index
via the install-dynamic-plugins CLI (same mechanism as the nightly sanity
check), boots the backend + legacy app dev servers in-process, and runs
yarn e2e:legacy-local. Triggers on e2e-tests/** and app-config*.yaml.

Follows the project workflow-security rules: pull_request (no secrets, public
image), pinned action SHAs, minimal permissions, concurrency control.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The 'Install Playwright browser' step hung on 'playwright install --with-deps'
(its apt phase); drop --with-deps since ubuntu-latest already has the libs
headless chromium needs. Add setup-node yarn caching for both lockfiles to cut
the slow root install on subsequent runs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Use mcr.microsoft.com/playwright:v1.59.1-noble (browsers + OS deps
preinstalled, matching @playwright/test 1.59.1) to eliminate the
playwright-install step that hung on plain ubuntu runners. Enable corepack
for the vendored yarn 4 and cache the yarn global cache explicitly (the
container lacks the yarn binary setup-node's cache relies on).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ree-e2e-harness

# Conflicts:
#	e2e-tests/package.json
…ation

main migrated e2e-tests from ESLint/Prettier/tsc to oxlint + oxfmt. Reformat
the harness files with oxfmt and satisfy oxlint: a shared isCI constant
(process.env.CI !== undefined && !== ''), nullish coalescing, the regexp u
flag, and no inline comments. Matches the pattern in playwright.config.ts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants